Skip to content

Comments

feat: #27 chipComponent 구현#38

Merged
sum130 merged 2 commits intodevelopfrom
feat/#27-chipcomponent
Jan 12, 2026
Merged

feat: #27 chipComponent 구현#38
sum130 merged 2 commits intodevelopfrom
feat/#27-chipcomponent

Conversation

@sum130
Copy link
Contributor

@sum130 sum130 commented Jan 11, 2026

🔗 연결된 이슈

📄 작업 내용

  • 미션카드 컴포넌트
  • 선택 컴포넌트
구현 내용 IPhone 13 mini
GIF

💻 주요 코드 설명

미션카드, 선택 둘다 코드형식은 같아서 SelectionChip 코드로 사용방법 적어놓겠습니다.
코드 설명할 파일 이름 (ex: HomeView)

  • Binding을 써놓았기때문에 이후 해당 컴포넌트를 사용하는 뷰에서 State로 isSelected를 받아서 사용해야합니다.
  • SelectionChip 안에 만들고자하는 미션의 title을 적어주시면됩니다.
struct SelectionChipPreview: View {
    @State private var isSelected = false

    var body: some View {
        SelectionChip(
            title: "여드름∙트러블",
            isSelected: $isSelected
        )
    }
}

👀 기타 더 이야기해볼 점

image

입주 추카합니다~~ 달려보자구요
짤은 영주온니가 선물해줘떠요 기엽조🥰

@sum130 sum130 linked an issue Jan 11, 2026 that may be closed by this pull request
2 tasks
@coderabbitai
Copy link

coderabbitai bot commented Jan 11, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

두 개의 새로운 SwiftUI 선택 컴포넌트가 추가되었습니다: 카드형 MissionCard와 칩형 SelectionChip. 두 뷰는 텍스트와 바인딩된 선택 상태를 받아 시각적 상태를 반영하며 탭으로 선택 상태를 토글합니다.

Changes

Cohort / File(s) 요약
UI 선택 컴포넌트
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift, Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift
새로 추가된 뷰들: MissionCardmissionText: String@Binding var isSelected: Bool을 받아 이미지, 텍스트 스타일, 배경 및 테두리 색상을 조건부로 변경하고 탭으로 토글함. SelectionChiptitle: String@Binding var isSelected: Bool을 받아 고정 프레임, 조건부 전경/배경/테두리 스타일을 적용하고 탭으로 토글함. (레이아웃/스타일링 주의)

Sequence Diagram(s)

(생성 조건 미충족 — UI 컴포넌트 추가만 존재하므로 다이어그램 생략)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • y-eonee
  • wotjs020708
  • soseoyo12
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 구현된 주요 변경사항(chipComponent 구현)을 명확하게 설명하고 있으며, 해당 이슈 번호(#27)도 포함되어 있습니다.
Description check ✅ Passed PR 설명이 구현된 두 컴포넌트(미션카드, 선택 칩)와 사용 방법을 설명하고 있으며, 연결된 이슈 번호를 명시하고 있습니다.
Linked Issues check ✅ Passed 이슈 #27에서 요구한 selectionChip과 missionCardChip 두 컴포넌트가 모두 구현되었으며, 각 컴포넌트는 선택 가능한 상태를 관리하는 기능을 포함하고 있습니다.
Out of Scope Changes check ✅ Passed 코드 변경사항이 모두 요청된 두 개의 칩 컴포넌트 구현에 집중되어 있으며, 이슈의 범위를 벗어나는 변경사항이 없습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#27-chipcomponent

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between afd9313 and 83afa5b.

📒 Files selected for processing (1)
  • Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Fix all issues with AI agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift:
- Around line 35-41: MissionCard duplicates SelectionChip UI and tap logic;
extract the shared styling into a reusable ViewModifier (e.g.,
SelectableChipStyle) and a convenience extension (e.g.,
selectableChipStyle(isSelected:)), then replace the duplicated
background/cornerRadius/overlay code in MissionCard and SelectionChip with
.selectableChipStyle(isSelected: isSelected) while keeping the .onTapGesture {
isSelected.toggle() } where selection state is handled; ensure the modifier
accepts isSelected to switch colors and corner radius consistently across both
components.
- Line 33: MissionCard currently hardcodes .frame(width: 148, height: 80) which
duplicates SelectionChip; extract a shared constant (e.g., let sharedCardSize =
CGSize(width: 148, height: 80) or a CGFloat constants CARD_WIDTH / CARD_HEIGHT)
and replace the hardcoded .frame call in MissionCard with .frame(width:
sharedCardSize.width, height: sharedCardSize.height); also update SelectionChip
to use the same constant so both components share one source of truth and remove
duplication.
- Line 10: The MissionCard view lacks an explicit access control modifier;
update the struct declaration for MissionCard to include the intended access
level (e.g., public or internal) to match the convention used for reusable
components like SelectionChip, and ensure any related nested types/properties
used externally also have appropriate access modifiers so the component’s
visibility is consistent.
- Around line 39-41: Add VoiceOver support to the MissionCard by attaching an
accessibility label and hint and exposing its selectable state: use the existing
isSelected toggle (from the onTapGesture) to set .accessibilityLabel("...") and
.accessibilityHint("...") with context-specific text, add
.accessibilityAddTraits(.isButton) and conditionally add the selected trait when
isSelected (e.g., .accessibilityAddTraits(isSelected ? .isSelected : [])), and
implement .accessibilityAction { isSelected.toggle() } so screen reader users
can both hear the state and perform the same toggle action (follow the pattern
used in SelectionChip for wording and trait choices).

In
@Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift:
- Line 10: The SelectionChip view has no explicit access control (defaults to
internal); update the declaration for struct SelectionChip to the intended
visibility (e.g., prepend public if it should be reusable across modules) and
explicitly annotate any stored properties, initializers, and methods inside
SelectionChip (and related nested types) with public or internal as appropriate
so the component's API surface is clear and consistent.
- Around line 16-20: The VStack in SelectionChip.swift wrapping the single
Text(title) is unnecessary; remove the VStack and place Text(title) directly in
the view body, preserving its modifiers (.typography(.body1_m_14) and
.foregroundStyle(isSelected ? .gray800 : .gray700)), and drop alignment:
.leading since it has no effect for a single child.
- Around line 23-27: The overlay’s RoundedRectangle stroke is applied before the
view is clipped, so the border isn’t being clipped by cornerRadius; in
SelectionChip.swift move the clipping before the overlay by applying
cornerRadius(10) or clipShape(RoundedRectangle(cornerRadius: 10)) to the view
(or container) prior to calling .overlay(...) so the stroke is clipped
correctly; update the code around SelectionChip’s overlay/cornerRadius to apply
clipping first and keep the existing isSelected ? .red500 : .gray500 stroke
logic.
- Around line 28-30: The SelectionChip view lacks VoiceOver metadata; update the
component (SelectionChip) to expose its role, state and action by adding
accessibility modifiers: set a descriptive accessibilityLabel (e.g., the chip
title), an accessibilityValue that reflects isSelected ("selected"/"not
selected"), and an accessibilityHint describing the tap action; also add an
accessibilityAddTraits(.isButton) (and .isSelected when isSelected == true) and
implement an accessibilityAction that performs the same logic as the
onTapGesture (the isSelected.toggle() behavior) so VoiceOver users can
understand and invoke the control.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4dcca0c and afd9313.

📒 Files selected for processing (2)
  • Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift
  • Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift
🧰 Additional context used
🧬 Code graph analysis (2)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Extension/Font+.swift (1)
  • typography (60-65)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Extension/Font+.swift (1)
  • typography (60-65)
🔇 Additional comments (2)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift (1)

21-21: 고정 크기 프레임의 적절성을 검토하세요.

고정된 프레임 크기(148x80)가 다양한 화면 크기와 다이나믹 타입에 대응하지 못할 수 있습니다. 디자인 요구사항에 따라 고정 크기가 필요한지, 아니면 유연한 크기 조절이 가능해야 하는지 확인하세요.

Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift (1)

20-20: 이미지 에셋이 에셋 카탈로그에 존재합니다.

"radiobtn_selected"와 "radiobtn_default" 에셋이 Assets.xcassets/cherrishIcon/ 디렉토리에 정상적으로 정의되어 있으므로 런타임 오류 우려는 없습니다. 현재 코드는 문제가 없습니다.

Likely an incorrect or invalid review comment.


import SwiftUI

struct MissionCard: View {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

접근 제어자를 명시적으로 선언하세요.

SelectionChip과 마찬가지로, 재사용 가능한 컴포넌트의 접근 수준을 명확히 하기 위해 public 또는 internal을 명시적으로 선언하세요.

♻️ 제안하는 수정
-struct MissionCard: View {
+public struct MissionCard: View {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
struct MissionCard: View {
public struct MissionCard: View {
🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift
at line 10, The MissionCard view lacks an explicit access control modifier;
update the struct declaration for MissionCard to include the intended access
level (e.g., public or internal) to match the convention used for reusable
components like SelectionChip, and ensure any related nested types/properties
used externally also have appropriate access modifiers so the component’s
visibility is consistent.

}
.padding(.horizontal, 7)
.padding(.vertical, 6)
.frame(width: 148, height: 80)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

SelectionChip과 동일한 고정 크기 프레임 문제.

SelectionChip과 동일한 프레임 크기(148x80)를 사용하고 있습니다. 디자인 요구사항을 확인하고, 두 컴포넌트가 동일한 크기를 공유해야 한다면 상수로 추출하여 중복을 제거하는 것을 고려하세요.

🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift
at line 33, MissionCard currently hardcodes .frame(width: 148, height: 80) which
duplicates SelectionChip; extract a shared constant (e.g., let sharedCardSize =
CGSize(width: 148, height: 80) or a CGFloat constants CARD_WIDTH / CARD_HEIGHT)
and replace the hardcoded .frame call in MissionCard with .frame(width:
sharedCardSize.width, height: sharedCardSize.height); also update SelectionChip
to use the same constant so both components share one source of truth and remove
duplication.

Comment on lines +35 to +41
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
)
.onTapGesture {
isSelected.toggle()
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

SelectionChip과 코드 중복이 있습니다.

MissionCardSelectionChip의 배경, 테두리, 탭 제스처 로직이 거의 동일합니다. 공통 로직을 추출하여 재사용 가능한 modifier나 base component로 만드는 것을 고려하세요.

♻️ 제안하는 리팩토링 예시

공통 스타일을 ViewModifier로 추출:

struct SelectableChipStyle: ViewModifier {
    let isSelected: Bool
    
    func body(content: Content) -> some View {
        content
            .frame(width: 148, height: 80)
            .background(isSelected ? .red200 : .gray0)
            .cornerRadius(10)
            .overlay(
                RoundedRectangle(cornerRadius: 10)
                    .stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
            )
    }
}

extension View {
    func selectableChipStyle(isSelected: Bool) -> some View {
        modifier(SelectableChipStyle(isSelected: isSelected))
    }
}

그런 다음 각 컴포넌트에서 사용:

// MissionCard에서
var body: some View {
    VStack(alignment: .leading) {
        // ... content
    }
    .selectableChipStyle(isSelected: isSelected)
    .onTapGesture {
        isSelected.toggle()
    }
}
🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift
around lines 35 - 41, MissionCard duplicates SelectionChip UI and tap logic;
extract the shared styling into a reusable ViewModifier (e.g.,
SelectableChipStyle) and a convenience extension (e.g.,
selectableChipStyle(isSelected:)), then replace the duplicated
background/cornerRadius/overlay code in MissionCard and SelectionChip with
.selectableChipStyle(isSelected: isSelected) while keeping the .onTapGesture {
isSelected.toggle() } where selection state is handled; ensure the modifier
accepts isSelected to switch colors and corner radius consistently across both
components.

Comment on lines +39 to +41
.onTapGesture {
isSelected.toggle()
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

접근성 지원을 추가하세요.

SelectionChip과 마찬가지로, VoiceOver 사용자를 위한 접근성 레이블과 힌트가 필요합니다. 라디오 버튼 동작을 수행하는 경우 .accessibilityAddTraits(.isButton)도 고려하세요.

♻️ 제안하는 수정
         .onTapGesture {
             isSelected.toggle()
         }
+        .accessibilityLabel(missionText)
+        .accessibilityAddTraits(isSelected ? [.isButton, .isSelected] : .isButton)
+        .accessibilityHint("미션 카드를 선택하려면 탭하세요")
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.onTapGesture {
isSelected.toggle()
}
.onTapGesture {
isSelected.toggle()
}
.accessibilityLabel(missionText)
.accessibilityAddTraits(isSelected ? [.isButton, .isSelected] : .isButton)
.accessibilityHint("미션 카드를 선택하려면 탭하세요")
🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/MissionCard.swift
around lines 39 - 41, Add VoiceOver support to the MissionCard by attaching an
accessibility label and hint and exposing its selectable state: use the existing
isSelected toggle (from the onTapGesture) to set .accessibilityLabel("...") and
.accessibilityHint("...") with context-specific text, add
.accessibilityAddTraits(.isButton) and conditionally add the selected trait when
isSelected (e.g., .accessibilityAddTraits(isSelected ? .isSelected : [])), and
implement .accessibilityAction { isSelected.toggle() } so screen reader users
can both hear the state and perform the same toggle action (follow the pattern
used in SelectionChip for wording and trait choices).


import SwiftUI

struct SelectionChip: View {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

접근 제어자를 명시적으로 선언하세요.

컴포넌트의 접근 제어자가 명시되지 않아 기본적으로 internal이 적용됩니다. Global/Components 디렉토리에 있는 재사용 가능한 컴포넌트이므로, 의도된 접근 수준을 명확히 하기 위해 public 또는 internal을 명시적으로 선언하는 것이 좋습니다.

♻️ 제안하는 수정
-struct SelectionChip: View {
+public struct SelectionChip: View {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
struct SelectionChip: View {
public struct SelectionChip: View {
🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift
at line 10, The SelectionChip view has no explicit access control (defaults to
internal); update the declaration for struct SelectionChip to the intended
visibility (e.g., prepend public if it should be reusable across modules) and
explicitly annotate any stored properties, initializers, and methods inside
SelectionChip (and related nested types) with public or internal as appropriate
so the component's API surface is clear and consistent.

Comment on lines 23 to 27
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
)
.cornerRadius(10)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

cornerRadius 적용 순서를 수정하세요.

overlay 이후에 cornerRadius를 적용하면 테두리(stroke)가 클리핑되지 않습니다. clipShape 또는 cornerRadiusoverlay 전에 적용해야 합니다.

🐛 제안하는 수정
         .frame(width: 148, height: 80)
         .background(isSelected ? .red200 : .gray0)
+        .cornerRadius(10)
         .overlay(
             RoundedRectangle(cornerRadius: 10)
                 .stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
         )
-        .cornerRadius(10)
         .onTapGesture {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
)
.cornerRadius(10)
.frame(width: 148, height: 80)
.background(isSelected ? .red200 : .gray0)
.cornerRadius(10)
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
)
.onTapGesture {
🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift
around lines 23 - 27, The overlay’s RoundedRectangle stroke is applied before
the view is clipped, so the border isn’t being clipped by cornerRadius; in
SelectionChip.swift move the clipping before the overlay by applying
cornerRadius(10) or clipShape(RoundedRectangle(cornerRadius: 10)) to the view
(or container) prior to calling .overlay(...) so the stroke is clipped
correctly; update the code around SelectionChip’s overlay/cornerRadius to apply
clipping first and keep the existing isSelected ? .red500 : .gray500 stroke
logic.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그렇대요

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그렇대요

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

예쓰

Comment on lines +28 to +30
.onTapGesture {
isSelected.toggle()
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

접근성 지원을 추가하세요.

컴포넌트에 접근성 레이블과 힌트가 없어 VoiceOver 사용자가 컴포넌트의 상태와 목적을 이해하기 어렵습니다.

♻️ 제안하는 수정
         .onTapGesture {
             isSelected.toggle()
         }
+        .accessibilityLabel(title)
+        .accessibilityAddTraits(isSelected ? .isSelected : [])
+        .accessibilityHint("탭하여 선택 상태를 전환합니다")
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.onTapGesture {
isSelected.toggle()
}
.onTapGesture {
isSelected.toggle()
}
.accessibilityLabel(title)
.accessibilityAddTraits(isSelected ? .isSelected : [])
.accessibilityHint("탭하여 선택 상태를 전환합니다")
🤖 Prompt for AI Agents
In @Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/SelectionChip.swift
around lines 28 - 30, The SelectionChip view lacks VoiceOver metadata; update
the component (SelectionChip) to expose its role, state and action by adding
accessibility modifiers: set a descriptive accessibilityLabel (e.g., the chip
title), an accessibilityValue that reflects isSelected ("selected"/"not
selected"), and an accessibilityHint describing the tap action; also add an
accessibilityAddTraits(.isButton) (and .isSelected when isSelected == true) and
implement an accessibilityAction that performs the same logic as the
onTapGesture (the isSelected.toggle() behavior) so VoiceOver users can
understand and invoke the control.

@sum130 sum130 self-assigned this Jan 11, 2026
@sum130 sum130 requested review from a team, soseoyo12, wotjs020708 and y-eonee and removed request for a team January 11, 2026 16:02
@sum130 sum130 added 수민🐶 Feature 새로운 기능 구현 및 API 연결 labels Jan 11, 2026
Copy link
Contributor

@y-eonee y-eonee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment on lines 23 to 27
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(isSelected ? .red500 : .gray500, lineWidth: 1)
)
.cornerRadius(10)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그렇대요

Copy link
Contributor

@wotjs020708 wotjs020708 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨스무디

Copy link
Contributor

@soseoyo12 soseoyo12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨슴니당

@sum130 sum130 merged commit 7b0e810 into develop Jan 12, 2026
1 check was pending
@sum130 sum130 deleted the feat/#27-chipcomponent branch January 12, 2026 07:18
Kimgyuilli pushed a commit that referenced this pull request Jan 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature 새로운 기능 구현 및 API 연결 수민🐶

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 칩 컴포넌트

4 participants